//
//  ViewController.swift
//  TangramDemo
//
//  Created by nowcoder on 2024/2/22.
//

import UIKit
import TangramKit


class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .lightText
        
//        test()
//        test2()
        
        let vertContainer = getRowOrColumnContainer(.vert)
        vertContainer.tg_top.equal(88)
//        vertContainer.tg_width.equal(.wrap)
        
        let rowContainer = getRowOrColumnContainer(.horz)
        rowContainer.tg_top.equal(288)
//        rowContainer.tg_width.equal(.wrap)
        
        self.view.addSubview(vertContainer)
        self.view.addSubview(rowContainer)
    }
    
    func test2() {
        // 创建一个垂直线性布局作为根视图
        let rootLayout = TGLinearLayout(.vert)
        rootLayout.tg_width.equal(.fill)  // 宽度填充父视图
        rootLayout.tg_height.equal(.fill) // 高度填充父视图
        view.addSubview(rootLayout)
        
        // 创建视图A
        let viewA = TGLinearLayout(.horz)
        viewA.tg_width.equal(.fill)  // 宽度填充父视图
        viewA.tg_height.equal(.fill) // 高度包裹内容
        rootLayout.addSubview(viewA)
        
        // 创建视图B
        let viewB = TGLinearLayout(.horz)
        viewB.tg_width.equal(50%)  // 宽度包裹内容
        viewB.tg_height.equal(.wrap) // 高度包裹内容
        viewB.tg_gravity = .center  // 设置对齐方式为中心对齐
        viewA.addSubview(viewB)
        
        // 创建视图C（UILabel）
        let viewC = UILabel()
        viewC.text = "这是一段很长的文本，足够让它换行。设置UILabel的宽度为包裹内容，高度为包裹内容设置UILabel的宽度为包裹内容，高度为包裹内容设置UILabel的宽度为包裹内容，高度为包裹内容"
        viewC.numberOfLines = 0 // 允许UILabel换行
        // 设置UILabel的宽度为包裹内容，高度为包裹内容
        viewC.tg_width.equal(.wrap)
        viewC.tg_height.equal(.wrap)
        viewB.addSubview(viewC)
        
        // 更新布局
        viewA.tg_layoutAnimationWithDuration(0.25)
    }
    
    func test () {
        // 创建一个垂直线性布局作为根视图
        let rootLayout = TGLinearLayout(.vert)
        rootLayout.tg_width.equal(.fill)  // 宽度填充父视图
        rootLayout.tg_height.equal(.fill) // 高度填充父视图
        rootLayout.backgroundColor = .random
        view.addSubview(rootLayout)
        
        // 创建视图A
        let viewA = TGLinearLayout(.horz)
        viewA.tg_width.equal(.fill)  // 宽度填充父视图
        viewA.tg_height.equal(100)   // 设置一个示例高度
        viewA.tg_top.equal(88)
        viewA.backgroundColor = .random
        rootLayout.addSubview(viewA)
        
        // 创建视图B
        let viewB = TGLinearLayout(.horz)
        // 设置视图B的宽度为包裹内容，高度为包裹内容
        viewB.tg_width.equal(.wrap)
        viewB.tg_height.equal(.wrap)
        viewB.backgroundColor = .random
        viewA.addSubview(viewB)
        
        // 创建视图C（UILabel）
        let viewC = UILabel()
        viewC.text = "这是一段很长的文本，足够让它换行。这是一段很长的文本，足够让它换行。这是一段很长的文本，足够让它换行。"
        viewC.numberOfLines = 0 // 允许UILabel换行
        // 设置UILabel的宽度为包裹内容，高度为包裹内容
        viewC.tg_width.equal(.wrap)
        viewC.tg_height.equal(.wrap)
        viewC.backgroundColor = .random
        viewB.addSubview(viewC)
    }
    
    func getRowOrColumnContainer(_ orientation: TGOrientation) -> TGBaseLayout {
        let containerView = TGLinearLayout(orientation)
        //containerView.tg_gravity = TGGravity.horz.fill
        containerView.tg_size(width: .fill, height: 300)
        containerView.backgroundColor = .random
//        containerView.tg_alignment = TGGravity.horz.left
        
        let text1 = "地接"
        let text2 = "南昌故郡，洪都新府，星分翼轸，地接江夏之湖，襟西外而带山，俯中南而尽夏，绿罗微风，绿竹成林，绿叶成荫，绿花成绕，绿草成荫，绿空成景，绿烟成烟，绿水成波，绿天成碧，绿地成春。"
        
        let textContainer1 = getTextViewWithContainer(text: text1)
        let textContainer2 = getTextViewWithContainer(text: text2)
        
        containerView.addSubview(textContainer1)
        containerView.addSubview(textContainer2)
        
        return containerView
    }
    
    func getTextViewWithContainer(text: String) -> TGBaseLayout {
        let containerView = TGFloatLayout(.horz)
//        containerView.tg_reverseFloat = true
//        containerView.tg_hspace = 30 //设置浮动布局里面子视图之间的水平间距。
//        containerView.tg_vspace = 10 //设置浮动布局里面子视图之间的垂直间距。
//        let containerView = TGRelativeLayout()
        containerView.backgroundColor = .random
//        containerView.tg_shrinkType = .auto
        
        // add view
        let textView = getTextView(text: text, containerView: containerView)
        textView.tg_right.equal(containerView.tg_right)
        containerView.addSubview(textView)
//        containerView.addSubview(getTextView(text: text + text, containerView: containerView))
        
        containerView.tg_padding = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
        containerView.tg_size(width: 40%, height: .wrap)/// 容器视图要fill拉伸出width 否则显示不出视图
        
//        containerView.tg_alignment = .fill
//        containerView.tg_shrinkType = .average

        return containerView
    }
    
    func getTextView(text: String, containerView: UIView) -> UILabel {
        
        let textView = UILabel()
        textView.text = text
        textView.textColor = UIColor.black
        textView.font = UIFont.systemFont(ofSize: 16, weight: .medium)
        textView.numberOfLines = 0
        textView.lineBreakMode = .byWordWrapping
        textView.backgroundColor = .random
        
        textView.tg_width.equal(.wrap)
        textView.tg_height.equal(.wrap)
        textView.tg_reverseFloat = true
//        textView.tg_alignment = .fill
//        textView.sizeToFit()
        return textView
    }
}


extension UIColor {
    static var random: UIColor {
        return UIColor(
            red: .random(in: 0 ... 1),
            green: .random(in: 0 ... 1),
            blue: .random(in: 0 ... 1),
            alpha: 1.0
        )
    }
}
